// 封装转化树方法
// 思路
// 1 方法的参数试什么，返回值试什么 参数平铺的数组，返回值树形数组
// 2 数据处理逻辑（时间复杂度最小的写法）
// 核心处理思路：寻找父节点的过程 通过pid字段去匹配id字段
function transTree(arr) {
  const targetArr = [];
  const map = {};
  arr.forEach((item) => {
    map[item.id] = item;
    map[item.id].children = [];
  });
  arr.forEach((item) => {
    if (map[item.pid]) {
      map[item.pid].children.push(item);
    } else {
      targetArr.push(item);
    }
  });

  return targetArr;
}

export default transTree;
